perm filename HEINIT.FAI[SYS,HE] blob
sn#004116 filedate 1973-01-03 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 ENTRY HEINIT
00004 00003 LSH N,7
00006 00004 GGNAM: SETZM TEM THIS SUBR GETS A NAME FROM TTY
00007 ENDMK
⊗;
ENTRY HEINIT
TITLE HEINIT - SECOND SEGMENT REINITIALIZATION
NAM←1
DEV←2
T←3
N←4
TEM←5
P←17
OPDEF CORE [CALLI 11]
OPDEF CORE2 [CALLI 400015]
OPDEF POINTS [712B8]
EXTERNAL SETFIL, SETDEV, JOBREL
HEINIT: MOVE -3(P)
HRRM TAB; STORE TABLE START
MOVE NAM,-2(P); FILE NAME
MOVE DEV,-1(P); DEVICE
JUMPN NAM,.+3
SKIPN NAM,SETFIL; USE OLD FILE NAME
JRST [ GOAGIN:OUTSTR [ASCIZ .SEGMENT FILE NAME
.]
PUSHJ P,GGNAM; NO OLD FILE NAME
MOVE NAM,TEM
JRST .+1]
JUMPN DEV,.+3
SKIPN DEV,SETDEV; USE OLD DEVICE
JRST [ OUTSTR [ASCIZ .DEVICE
.]
PUSHJ P,GGNAM; NO OLD DEVICE
MOVE DEV,TEM
JRST .+1]
MOVEM NAM,SEGNAM; SET UP INIT AND LOOKUP BLOCKS
MOVEM DEV,INTT
SETZM SEGNAM+3
HLLZS SEGNAM+1
RELOK: POINTS BLK; CHECK FOR UNKNOWN JOBS
SETZM TEMP#; LINKED TO OUR 2ND SEG
SETZM T
LOOP: SKIPN N,BLK(T); BY COMPARING LIST OF LINKED JOBS
JRST OUTLAB; TO JOB LIST IN HE
MOVEI TEM,=15
TAB: CAME N,(TEM)
SOJGE TEM,.-1
JUMPGE N,[AOJA T,LOOP]
OUTSTR [ASCIZ .JOB .]; FOUND ONE - TYPE HIS NUMBER
IDIVI N,12
ADDI N,60
LSH N,7
ORI N,60(TEM)
ROT N,-16
MOVEM N,TEMP
OUTSTR TEMP
OUTSTR [ASCIZ . ATTACHED
.]
AOJA T,LOOP
OUTLAB: SKIPN TEMP; DID WE FIND ANY?
JRST .+4
OUTSTR [ASCIZ .GET RID OF THEM AND CONTINUE
.]
CALLI 12; YES HALT UNTIL GONE
JRST RELOK; GO BACK AND CHECK AGAIN
INIT 3,17; GET SEGMENT
INTT: 0
0
JRST ERRSEG
LOOKUP 3,SEGNAM
JRST ERRSEG
MOVS T,SEGNAM+3; GET WORD COUNT
HRLM T,LIOD; AND SET UP INPUT
MOVMS T
MOVEM T,JOBSIZ#; ALSO SAVE FOR LATER
MOVE N,JOBREL; HERE IS WHERE WE PUT IT
MOVEM N,JOBEND#; SO SAVE FOR RESTORING
HRRM N,LIOD
ADD T,JOBREL; HERE IS NEW END OF LOWER SEG
CORE T,; EXPAND CORE
JRST COR1ER; WE LOSE
INPUT 3,[LIOD: 0
0]; READ IN 2ND SEGMENT
MOVE T,JOBSIZ
CORE2 T,; GET UPPER SEGMENT OF RIGHT SIZE
JRST COR2ER; WE LOSE
HRR T,LIOD; BLT 2ND SEG INTO UPPER SEG
HRLI T,1(T)
HRRI T,400000
MOVE N,JOBSIZ
ADDI N,(T)
BLT T,-1(N); WATCH IT GO !!!
MOVE T,JOBEND; GET RID OF EXTRA LOWER SEG CORE
CORE T,
HALT; SHOOT A SYSTEM PROGRAMMER
MOVEM NAM,SEGNAM; SAVE FILE AND DEVICE NAME
MOVEM DEV,SETDEV
SUB P,[XWD 4,4]
JRST @4(P)
GGNAM: SETZM TEM; THIS SUBR GETS A NAME FROM TTY
TTCALL 4,T
SKIPA N,[POINT 6,TEM]
TTCALL T
CAIN T,15
JRST [ TTCALL T; DONE, FLUSH LINE FEED
POPJ P,]
CAILE T,140
SUBI T,40; CONVERT LOWER CASE
SUBI T,40; CONVERT TO SIXBIT
IDPB T,N
JRST GGNAM+3
COR1ER: OUTSTR [ASCIZ .LOW.]
CAIA
COR2ER: OUTSTR [ASCIZ .UPPER.]
OUTSTR [ASCIZ . CORE NOT AVAILABLE
.]
ERRSEG: OUTSTR [ASCIZ .SEGMENT LOAD ERROR
.]
SETZM SETDEV; FORCE NEW DEVICE
SETZM DEV
JRST GOAGIN; AND NEW FILE
BLK: BLOCK =33
SEGNAM: 0
SIXBIT /REL/
BLOCK 2
END